Day6至day10就是第二堂課了,現在我們對機器學習與圖像辨識已經有初步的認識,接下來我們來看第三堂課Natural Language Processing in TensorFlow,是另一種應用,也是人的一種特質-語言。
要教會機器人語言首先我們要寫一本辭典,也就是建立詞彙庫,同樣使用TensorFlow提供的keras中的功能,我們可輸入一些句子,然後根據句子中的單字創造詞彙庫,其中我們先設定詞彙庫的最大容量是100(num_words = 100):
from tensorflow.keras.preprocessing.text import Tokenizer
from tensorflow.keras.preprocessing.sequence import pad_sequences
# Define your input texts
sentences = [
'I love my dog',
'I love my cat',
'You love my dog!',
'Do you think my dog is amazing?'
]
# Initialize the Tokenizer class
tokenizer = Tokenizer(num_words = 100, oov_token="{OOV}")
# Tokenize the input sentences
tokenizer.fit_on_texts(sentences)
# Get the word index dictionary
word_index = tokenizer.word_index
# Generate list of token sequences
sequences = tokenizer.texts_to_sequences(sentences)
我們可以看到word_index這個dictionary的結果,這邊要注意大寫都會變成小寫,以及問號驚嘆號不處理:
{'{OOV}': 1, 'my': 2, 'love': 3, 'dog': 4, 'i': 5, 'you': 6, 'cat': 7, 'do': 8, 'think': 9, 'is': 10, 'amazing': 11}
以及原本的句子轉變成機器人語(sequences):
[[5, 3, 2, 4], [5, 3, 2, 7], [6, 3, 2, 4], [8, 6, 9, 2, 4, 10, 11]]
另外在 Tokenizer中有一個設定為 oov_token,OOV是指out of vocabulary,也就是當出現不認識的字時,以這個詞彙取代,舉例來說,當我們用這個詞彙庫來讀這兩個句子時:
'i really love my dog', 'my dog loves my manatee'
沒有設定OOV,不認識的字會消失,變成:
'i love my dog', 'my dog my'
但如果有設定OOV會變成:
'i {OOV} love my dog', 'my dog {OOV} my {OOV}'
這就像我們有時聽到某些詞被消失時,還是有機會能依靠上下文能判斷大致的意思。